#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUdpSocket>  // UDP通信
#include <QTimer>      // 定时器
#include <QThread>     // 线程操作
#include <QFile>       // 文件操作
#include <QTextStream>
#include <QElapsedTimer> // 计时统计
#include <QAtomicInt>   // 线程安全计数
#include <QMessageBox>
#include "myplaintextedit.h"
#include "udpcomm.h"
#include "sendDataTo_st.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

signals:
    void parsedDataReady(int distance, int angle, const QString &targetType);
    void ContinuousSendData(int num);
    void sendDataSignal(const QByteArray &data, const QHostAddress &remoteAddr, quint16 remotePort);

private slots:
    void on_btnSend_clicked();
    void output_parseSonarData(int distance, int angle, const QString &targetType);   //输出解析数据
    void receive_parseSonarData(const QByteArray &data);  //接收解析数据
    void on_checkBox_stateChanged(int arg1);
        //发送数据给昇腾
    void sendDataToST();
    void on_button1_clicked();

private:
    Ui::MainWindow *ui;
    //UDP
    UdpComm *udpRecv8066; // 接收端口8066
    UdpComm *udpRecv8067; // 接收端口8067
    UdpSender *udpSend;     // 发送端口

    //线程相关
    QThread *recvThread8066;
    QThread *recvThread8067;
    QThread *sendThread;
    void initUdpTest();

    //数据解析
    void parseSonarData(const QByteArray &data);

    int total_send_count; // 总发送次数
    int sendCount; // 已发送次数
    QTimer* timer1;

};
#endif // MAINWINDOW_H
